CONSTRUCTION METHOD FOR (n,n(n-1),n-1) PERMUTATION GROUP CODE BASED ON COSET PARTITION AND CODEBOOK GENERATOR THEREOF

ABSTRACT

A construction method for a (n,n(n−1),n−1) permutation group code based on coset partition is provided. The presented (n,n(n−1),n−1) permutation group code has an error-correcting capability of d−1 and features a strong anti-interference capability for channel interferences comprising multi-frequency interferences and signal fading. As n is a prime, for a permutation code family with a minimum distance of n−1 and a code set size of n(n−1), the invention provides a method of calculating n−1 orbit leader permutation codewords by O n ={αo 1 } α=1   n−1 (mod n) and enumerating residual codewords of the code set by P n =C n O n ={(l 1 ) n−1 O n }={(r n ) n−1 O n )}. Besides, a generator of the code set thereof is provided. The (n,n(n−1),n−1) permutation group code of the invention is an algebraic-structured code, n−1 codewords of the orbit leader array can be obtained simply by adder and (mod n) calculator rather than multiplication of positive integers. Composition operations of the cyclic subgroup C n  acting on all permutations o α  of the orbit leader permutation array O n  are replaced by well-defined cyclic shift composite operation functions (l 1 ) n−1  and (r n ) n−1  so that the action of the cyclic group acting on permutations is realized by a group of cyclic shift registers.

FIELD OF THE INVENTION

The invention relates to a technical field of channel coding in communication transmission, and more particularly to a construction method for a (n,n(n−1),n−1) permutation group code based on coset partition and a codebook generator thereof.

BACKGROUND OF THE INVENTION

Multiple interferences comprising multipath fading, permanent narrow-band noise, broadband impulse noise and colored background noises may coexist in a power line channel, which is uncommon for wireless and wired channels.

Therefore, information transmission reliability is hard to be guaranteed by applying existing technology of wireless and wired communications directly to power line carrier communication channels, and it is necessary to propose a solution of error-correcting codes with higher reliability to interferences of multiple forms and multiple frequencies in power line carrier communication.

Besides, error-correcting codes with higher reliability are still needed for wider wireless transmission environment with interferences of multiple forms and multiple frequencies.

In 2000, Vinck introduced permutation codes into power line carrier communication, and a corresponding dissertation “‘Coded modulation for power line communications’, AEU int. J. Electron. Commun., vol. 54, no. 1, pp: 45-49, 2000” discloses a power line carrier coded modulation method combining permutation code and M-dimension FSK modulation, where time diversity and frequency diversity are introduced simultaneously at a transmitter terminal according to redundancy of permutation codes to increase capability of resisting fading and interferences of multiple frequencies, and a receiving signal is detected by a constant envelope demodulation algorithm at a receiver terminal to form a simple non-coherent demodulation method. It should be noted that Vinck came to a conclusion that permutation codes have an error-correcting capability of d−1 rather than L └(d−1)/2 ┘ through analyzing a permutation code with code length of 4. However, Vinck failed to provide an effective construction method for permutation codes. At present, permutation codes with an error-correcting capability of d−1 develop slowly and are not applied in practice for design methods for algebraic structures of permutation codes are rare and more particularly, the problem of their executable circuits has not been effectively solved yet.

SUMMARY OF THE INVENTION

In view of the above-mentioned problems, it is an objective of the invention to provide a construction method of (n,n(n−1),n−1) permutation group code based on coset partition and a codebook generator thereof. More specifically, there is provided an algebraic structural design method and a codebook enumerator for permutation codes with a code length of n, a minimum distance of n−1, a cardinality of n(n−1) and an error-correcting capability of d−1=n−2. For multiple interferences comprising multipath fading, permanent narrow-band noise, broadband impulse noise and colored background noises may coexist in a power line channel, the invention provides a design method for an error-correcting code capable of resisting the mixed interferences. Besides, the permutation group code of the invention features a strong anti-interference capability for multi-frequency interferences in wireless communication and malicious frequency interferences from a human being, and is capable of protecting transmitted signals under the circumstance with low requirement for data rate and coexisted deep fading and various mixed frequency interferences.

To achieve the above objective, according to one embodiment of the invention, there is provided a construction method of the (n,n(n−1),n−1) permutation group codes based on coset partition, wherein a construction of this permutation code with a code length of n, a minimum distance of n−1 and a code size of n(n−1) is expressed by P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)=C_(n)O_(n)={{C_(n)o₁}, {C_(n)o₂}, . . . , {C_(n)o_(n−1)}}={{c_(β)∘o_(α)}_(β=1) ^(n)}_(α=1) ^(n−1), P_(n)=C_(n)O_(n) represents that C_(n) is a coset of the subgroup O_(n) and O_(n) is also a coset of the subgroup C_(n), P_(n)={{C_(n)o₁}, {C_(n)o₂}, . . . , {C_(n)o_(n−1)}} represents dividing P_(n) into n−1 cosets by the subgroup C_(n), each coset {C_(n)o_(α)} forms an orbit or an cyclic Latin square (C-LS) of a permutation o_(α), P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)={{c_(β)∘o_(α)}_(β=1) ^(n)}_(α=1) ^(n−1) represents a permutation code and each codeword p_(βα) is generated by composition operation of a permutation c_(β) of the subgroup C_(n) and a permutation o_(α) of the subgroup O_(n), α=1, 2, . . . n−1, and β=1, 2, . . . n . . . . According to another embodiment of the invention, there is provided a generator of the (n,n(n−1),n−1) permutation group code based on coset partition, comprising an orbit leader array generator, a flash memory and a cyclic-bidirectional-shift register group, wherein

the orbit leader array generator is operable for performing an operation of O_(n)={αo₁}_(α=1) ^(n−1)(mod n) to generate n−1 orbit leader permutations; the flash memory is operable for storing output results of the orbit leader array generator and the cyclic-bidirectional-shift register group; and the cyclic-bidirectional-shift register group is operable for performing the operation of (l₁)^(n−1) or (r_(n))^(n−1) acting on a permutation by calculating an orbit {(l₁)^(n−1)o_(α)} or {(r_(n))^(n−1)o_(α)} of an orbit leader permutation o_(α) and a code set {(l₁)^(n−1)O_(n)} or {(r_(n))^(n−1)O_(n)}, where α=1, 2, . . . , n−1.

The (n,n(n−1),n−1) permutation group code based on coset partition of the invention is an algebraic-structured code, the orbit leader permutation codewords of the code set can be obtained simply by adder and (mod n) calculator instead of complex composition operations, and the whole code set can be realized by a group of cyclic shift registers. As a non-binary error-correcting code, the permutation code has an error-correcting capability of d−1, two times that of non-binary error-correcting codes in prior art.

Demodulation can be realized simply by a noncoherent constant envelop detecting technology at a receiver terminal combining permutation code with MFSK modulation technology, and signal transmission reliability can be guaranteed for communication channels with deep fading and mixed frequency noises.

BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS

FIG. 1 is an overall block diagram of a generator for a (n,n(n−1),n−1) permutation group code of the invention;

FIG. 2 is a schematic diagram of an orbit leader array generator of the invention;

FIG. 3 is a schematic diagram of a flash memory of the invention; and

FIG. 4 is a schematic diagram of a cyclic-bidirectional-shift register group of the invention.

SPECIFIC EMBODIMENTS OF THE INVENTION

For clear understanding of the objectives, features and advantages of the invention, detailed description of the invention will be given below in conjunction with accompanying drawings and specific embodiments. It should be noted that the embodiments are only meant to explain the invention, and not to limit the scope of the invention.

Basic Principles

Basic principles of a (n,n(n−1),n−1) permutation group code based on coset partition of the invention are given below.

Code symbols can take values in two finite fields, namely, Z_(n) ⁰={0, 1, . . . , n−1} represents a finite field of order n containing element 0, and Z_(n) ¹={1, 2, . . . , n} represents a finite positive integer field of order n containing no element 0, and is also a cyclic group of order n.

Calling a set formed by all n! permutations of n elements in Z_(n) ⁰ or Z_(n) ¹ a symmetric group S_(n)={π₁, . . . , π_(k), . . . , π_(n!)}, an element of S_(n), can be represented by a permutation π_(k)=[a₁, . . . a_(i), . . . , a_(n)],elements of a permutation by a₁ . . . a_(i) . . . a_(n)εZ_(n) ⁰ or a₁ . . . a_(i) . . . a_(n)εZ_(n) ¹, degree (dimension) of a permutation is |π_(k)|=n, and cardinality (order) of the symmetric group is |S_(n)=n!. Let π₀=e=[a₁a₂ . . . a_(n)]=[01 . . . n−1] or π₀=e=[a₁a₂ . . . a_(n)]=[12 . . . n] represent an identity element of the symmetric group S_(n), where [a₁a₂ . . . a_(n)] represent a permutation in S_(n), and (a₁a₂ . . . a_(n)) represents a permutation operator.

A group H is a cyclic permutation group if H can be generated by a single element, i.e., there is an element xεH such that H={x¹|iεZ_(n) ¹, x, x^(i)εS_(n)}. We shall write H=

x

and say that H is generated by x or x is a generator of H.

Let γ=

γ₂

be a cyclic permutation group of n permutation operators, its generator is γ₂=(a₂a₃ . . . a_(n)a₁), and its cardinality is |γ|=n. If making the operator set γ=

γ₂

act on a permutation π=[a₁ . . . a_(i) . . . a_(n)], we get {γπ}={{γ₂, γ₃, . . . , γ_(n), γ₁}[a₁ . . . a_(i) . . . a_(n)]}={

γ₂

π}={{γ₂, γ₂ ², . . . , γ₂ ^(n−1)γ₂ ^(n)}[a₁ . . . a_(i) . . . a_(n)]}, then {γπ} is regarded as an orbit containing permutation π under the action of cyclic permutation group 7 and element number of the orbit {γπ} is |{γπ}|=n. Basic structure of the (n,n(n−1),n−1) permutation group code based on coset partition is provided by the following two Theorems and a Lemma without a proof.

Lemma 1 [construction of c_(n)]: C_(n)={c₁, c₂, . . . , c_(n)}=

c₂

is a subgroup of S_(n) and also a cyclic permutation group with minimum distance d_(C) _(n) =n and cardinality |C_(n)|=n if and only if (i) C_(n)={γπ}={

γ₂

[a₁a₂ . . . a_(n)]}; (ii) its subscript is specified to keep consistent with the value of the first element of each permutation in C_(n), i.e., c₁=γ₁π=c₂ ^(n)=γ₂ ^(n)π=(a₂a₃ . . . a_(n)a₁)^(n)[a₁a₂ . . . a_(n)a₁]=[a₁a₂ . . . a_(n)], c₂=γ₂π=[a₂a₃ . . . a_(n)a₁], c₃=γ₃π=c₂ ²=γ₂ ²π=(a₂a₃ . . . a_(n)a₁)²[a₁a₂ . . . a_(n)]=[₃a₄ . . . a_(n)a₁a₂], . . . , c_(n)=γ_(n)π=c₂ ^(n−1)=γ₂ ^(n−1)π=(a₂a₃ . . . a_(n)a₁)^(n−1)[a₁a₂ . . . a_(n)]=[a_(n)a₁a₂ . . . a_(n−1)].

Theorem 2 [construction of O_(n)]: Let O_(n), be a (n−1)×n permutation array or a set formed by n−1 permutations, and construct O_(n)={{o_(α)}_(α=1) ^(n−1)}={(α·o₁}_(α=1) ^(n−1), where o₁=[12 . . . n] is an identity permutation, and α=1, 2, . . . , n−1 is the row index of permutation array O_(n), also as an index of the number of permutations in the set O_(n). If and only if i) n is a prime; ii) for all α=1, 2, . . . , n−1, we have (α·n)(mod n)=n; then the set O_(n) is a subgroup of S_(n), all elements of the nth column in the array O_(n) are n, and the minimum distance of O_(n) is d_(O) _(n) =n−1 and its cardinality is |O_(n)|=n−1.

Theorem 3 [constructing a permutation group code P_(n) by C_(n) and O_(n)]: For any prime n, let P_(n)=({p₁₁, . . . , p_(βα), . . . p_(n(n−1))} be a nontrivial subgroup of S_(n), we use the composition of C_(n) and O_(n) to construct P_(n), i.e., P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)=C_(n)O_(n)={{(c_(β)∘o_(α)}_(β=1) ^(n)}_(α=1) ^(n−1), where c_(β)∘o_(α) denotes a composition operation between a permutation c_(β)εC_(n) and a permutation o_(α)εO_(n). If C_(n)∩O_(n)=e=[12 . . . n], then P_(n) is a permutation group code with the minimum Hamming distance d_(P) _(n) =n−1 and cardinality |P_(n)|=n(n−1) in which C_(n) is a left coset of O_(n) and O_(n) is a right coset of C_(n).

Example 1

Let n=5, and C₅ is obtained by Lemma 1 as follows:

$C_{5} = {\begin{Bmatrix} {c_{1},} \\ {c_{2},} \\ {c_{3},} \\ {c_{4},} \\ c_{5} \end{Bmatrix} = {{\langle c_{2}\rangle} = {\begin{Bmatrix} {c_{2}^{5},} \\ {c_{2}^{1},} \\ {c_{2}^{2},} \\ {c_{2}^{3},} \\ c_{2}^{4} \end{Bmatrix} = {{\langle{\gamma_{2}\pi}\rangle} = {\begin{Bmatrix} {{\gamma_{2}^{5}\pi},} \\ {{\gamma_{2}^{1}\pi},} \\ {{\gamma_{2}^{2}\pi},} \\ {{\gamma_{2}^{3}\pi},} \\ {\gamma_{2}^{4}\pi} \end{Bmatrix} = {\begin{Bmatrix} {{\left( {a_{2}a_{3}a_{4}a_{5}a_{1}} \right)^{5}\left\lbrack {a_{1}a_{2}a_{3}a_{4}a_{5}} \right\rbrack},} \\ {{\left( {a_{2}a_{3}a_{4}a_{5}a_{1}} \right)\left\lbrack {a_{1}a_{2}a_{3}a_{4}a_{5}} \right\rbrack},} \\ {{\left( {a_{2}a_{3}a_{4}a_{5}a_{1}} \right)^{2}\left\lbrack {a_{1}a_{2}a_{3}a_{4}a_{5}} \right\rbrack},} \\ {{\left( {a_{2}a_{3}a_{4}a_{5}a_{1}} \right)^{3}\left\lbrack {a_{1}a_{2}a_{3}a_{4}a_{5}} \right\rbrack},} \\ {\left( {a_{2}a_{3}a_{4}a_{5}a_{1}} \right)^{4}\left\lbrack {a_{1}a_{2}a_{3}a_{4}a_{5}} \right\rbrack} \end{Bmatrix} = {\begin{Bmatrix} {{a_{1}a_{2}a_{3}a_{4}a_{5}},} \\ {{a_{2}a_{3}a_{4}a_{5}a_{1}},} \\ {{a_{3}a_{4}a_{5}a_{1}a_{2}},} \\ {{a_{4}a_{5}a_{1}a_{2}a_{3}},} \\ {{a_{5}a_{1}a_{2}a_{3}a_{4}},} \end{Bmatrix} = \begin{Bmatrix} {12345,} \\ {23451,} \\ {34512,} \\ {45123,} \\ 51234 \end{Bmatrix}}}}}}}}$

O₅ in a form of permutation array is obtained by Theorem 2 as follows:

$O_{5} = {\begin{bmatrix} o_{1} \\ o_{2} \\ o_{3} \\ o_{4} \end{bmatrix} = {\begin{bmatrix} {1o_{1}} \\ {2o_{1}} \\ {3o_{1}} \\ {4o_{1}} \end{bmatrix} = {{\begin{bmatrix} {1 \cdot 1} & {1 \cdot 2} & {1 \cdot 3} & {1 \cdot 4} & {1 \cdot 5} \\ {2 \cdot 1} & {2 \cdot 2} & {2 \cdot 3} & {2 \cdot 4} & {2 \cdot 5} \\ {3 \cdot 1} & {3 \cdot 2} & {3 \cdot 3} & {3 \cdot 4} & {3 \cdot 5} \\ {4 \cdot 1} & {4 \cdot 2} & {4 \cdot 3} & {4 \cdot 4} & {4 \cdot 5} \end{bmatrix}\left( {{mod}\; 5} \right)} = {{\begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\ 2 & 4 & 6 & 8 & 10 \\ 3 & 6 & 9 & 12 & 15 \\ 4 & 8 & 12 & 16 & 20 \end{bmatrix}\left( {{mod}\; 5} \right)} = \begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\ 2 & 4 & 1 & 3 & 5 \\ 3 & 1 & 4 & 2 & 5 \\ 4 & 3 & 2 & 1 & 5 \end{bmatrix}}}}}$

So that O₅ in a form of set is obtained as follows:

$O_{5} = {\begin{Bmatrix} {o_{1},} \\ {o_{2},} \\ {o_{3},} \\ o_{4} \end{Bmatrix} = {\begin{Bmatrix} {{a_{1}a_{2}a_{3}a_{4}a_{5}},} \\ {{a_{2}a_{4}a_{1}a_{3}a_{5}},} \\ {{a_{3}a_{1}a_{4}a_{2}a_{5}},} \\ {a_{4}a_{3}a_{2}a_{1}a_{5}} \end{Bmatrix} = {\begin{Bmatrix} {12345,} \\ {24135,} \\ {31425,} \\ 43215 \end{Bmatrix}.}}}$

Let c₁=o₁=e=[12345], and P₅ is obtained by Theorem 3 as follows:

$P_{5} = {\left\{ \left\{ p_{\beta \; \alpha} \right)_{\beta = 1}^{5} \right\}_{\alpha = 1}^{4} = {\left\{ {\left\{ {C_{5}o_{1}} \right\},\left\{ {C_{5}o_{2}} \right\},\left\{ {C_{5}o_{3}} \right\},\left\{ {C_{5}o_{4}} \right\}} \right\} = {\left\{ \left\{ {c_{\beta} \cdot o_{\alpha}} \right\}_{\beta = 1}^{5} \right\}_{\alpha = 1}^{4} = {\begin{Bmatrix} {{c_{1} \cdot o_{1}},} & {{c_{1} \cdot o_{2}},} & {{c_{1} \cdot o_{3}},} & {{c_{1} \cdot o_{4}},} \\ {{c_{2} \cdot o_{1}},} & {{c_{2} \cdot o_{2}},} & {{c_{2} \cdot o_{3}},} & {{c_{2} \cdot o_{4}},} \\ {{c_{3} \cdot o_{1}},} & {{c_{3} \cdot o_{2}},} & {{c_{3} \cdot o_{3}},} & {{c_{3} \cdot o_{4}},} \\ {{c_{4} \cdot o_{1}},} & {{c_{4} \cdot o_{2}},} & {{c_{4} \cdot o_{3}},} & {{c_{4} \cdot o_{4}},} \\ {{c_{5} \cdot o_{1}},} & {{c_{5} \cdot o_{2}},} & {{c_{5} \cdot o_{3}},} & {c_{5} \cdot o_{4}} \end{Bmatrix} = {\begin{Bmatrix} {{a_{1}a_{2}a_{3}a_{4}a_{5}},} & {{a_{2}a_{4}a_{1}a_{3}a_{5}},} & {{a_{3}a_{1}a_{4}a_{2}a_{5}},} & {{a_{4}a_{3}a_{2}a_{1}a_{5}},} \\ {{a_{2}a_{3}a_{4}a_{5}a_{1}},} & {{a_{3}a_{5}a_{2}a_{4}a_{1}},} & {{a_{4}a_{2}a_{5}a_{3}a_{1}},} & {{a_{5}a_{4}a_{3}a_{2}a_{1}},} \\ {{a_{3}a_{4}a_{5}a_{1}a_{2}},} & {{a_{4}a_{1}a_{3}a_{5}a_{2}},} & {{a_{5}a_{3}a_{1}a_{4}a_{2}},} & {{a_{1}a_{5}a_{4}a_{3}a_{2}},} \\ {{a_{4}a_{5}a_{1}a_{2}a_{3}},} & {{a_{5}a_{2}a_{4}a_{1}a_{3}},} & {{a_{1}a_{4}a_{2}a_{5}a_{3}},} & {{a_{2}a_{1}a_{5}a_{4}a_{3}},} \\ {{a_{5}a_{1}a_{2}a_{3}a_{4}},} & {{a_{1}a_{3}a_{5}a_{2}a_{4}},} & {{a_{2}a_{5}a_{3}a_{1}a_{4}},} & {a_{3}a_{2}a_{1}a_{5}a_{4}} \end{Bmatrix} = \begin{Bmatrix} {12345,} & {24135,} & {31425,} & {43215,} \\ {23451,} & {35241,} & {42531,} & {54321,} \\ {34512,} & {41352,} & {53142,} & {15432,} \\ {45123,} & {52413,} & {14253,} & {21543,} \\ {51234,} & {13524,} & {25314,} & 32154 \end{Bmatrix}}}}}}$

Example 1 illustrates P₅ is a permutation group code with a code length of 5, a minimum distance of 4, a code set size of 20 and an error-correcting capability of 3, and it can be seen that P₅ is formed by four orbits {C₅o₁}, {C₅o₂}, {C₅o₃}, {C₅o₄}.

Technical Solution

It is formed by two parts. The first part covers a construction method for a (n, n(n−1),n−1) permutation group code based on coset partition, and the second part covers a generator of this permutation group code thereof.

Part 1: A Construction Method for a (n,n(n−1),n−1) Permutation Group Code Based on Coset Partition.

In terms of Lemma 1 and Theorems 2 and 3, in the construction method for a (n,n(n−1),n−1) permutation group code based on coset partition, all codewords in the code set are calculated by P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)=C_(n)O_(n)={{C_(n)o₁}, {C_(n)o₂}, . . . , {C_(n)o_(n−1)}}={{c_(β)∘o_(α)}_(α=1) ^(n−1)}_(β=1) ^(n), where P_(n) is a non-trivial subgroup of a symmetric group S_(n), with a size of |P_(n)|=n(n−1) and a minimum distance of d_(|P) _(n) _(|)=n−1, C_(n)={c₁, . . . , c_(β), . . . , c_(n)}=

c₂

is a subgroup of P_(n) and also a cyclic group with a size of |C_(n)|=n and a minimum distance of d_(|C) _(n) _(|)=n, β=1, 2, . . . , n, O_(n)={o₁, . . . , o_(α), . . . , o_(n−1)} is another subgroup of P_(n) different from C_(n) and also called as an orbit leader array of the (n,n(n−1),n−1) permutation group code, with a size of |O_(n)|=n−1 and a minimum distance of d_(|O) _(n) _(|)=n−1, α=1, 2, . . . , n−1, and intersection of C_(n) and O_(n) is an identity permutation (C_(n)∩O_(n)=e). The code set P_(n) is divided into n−1 cosets by the subgroup C_(n) (={C_(n)o₁, C_(n)o₂, . . . , C_(n)o_(n−1)}), each coset {C_(n)o_(α)} forms an orbit or an cyclic Latin square (C-LS) of a permutation o_(α).

Each codeword of the code set is calculated by P_(βα)=c_(β)∘o_(α) representing a composition operation between a permutation c_(β)εC_(n) and a permutation o_(α)εO_(n), which is unfavorable for hardware realization, and therefore a circuit executable permutation operation function should be constructed. Since C_(n) is a cyclic group, it is possible to substitute cyclic shift operation of a permutation for the action of C_(n), so that composition operation of two permutations are equivalently transferred to cyclic shift operation of being able to be performed by basic unit circuit namely cyclic shift register. Therefore, operation function and composite operation function are defined first as follows.

Construction of Operation Function

Let T be a set of all operation functions available acting on a permutation, construct a right-shift operation function set T_(right)={r₂, r₃, . . . , r_(n−1), r_(n)}⊂T, where each element r_(i)εT_(right) is a function r_(i):S_(n)→S_(n) defined by r_(i)π=r_(i)[a₁ . . . a_(i) . . . a_(n)]=[a_(i)a₁ . . . a_(i−1)a_(i+1) . . . a_(n)]εS_(n), and r_(i)εT_(right) is called as a partial cyclic right-shift operation function of a permutation. Especially for i=n, we have r_(n)π=r_(n)[a₁a₂ . . . a_(n)]=[a_(n)a₁a₂ . . . a_(n−1)]εS_(n) and r_(n) is called as a cyclic-right-shift operation function of a permutation. Similarly, construct a left-shift operation function set T_(left)={l₁, l₂, . . . , l_(n−1)}⊂T, where each element l_(j)εT_(left) is a function l_(j):S_(n)→S_(n) defined by l_(j)π=l_(j)[a₁ . . . a_(j) . . . a_(n)]=[a₁ . . . a_(j−1) a_(j+1) . . . a_(n)a_(j)]εS_(n), and l_(j)εT_(left) is called as a partial cyclic left-shift operation function of a permutation. Especially for j=1, we have l₁π=l₁[a₁a₂ . . . a_(n)]=[a₂a₃ . . . a_(n−1)a_(n)a₁]εS_(n) and l₁ is called as a cyclic-left-shift operation function of a permutation.

Construction of Cyclic Shift Composite Operation Function

Arrange part or all operation functions of the set T_(left) or T_(right) in a string or consecutive multiplication of powers of different functions, so that the operation function string or the product of function powers forms a composite operation function represented as ƒ_(CF) (u, Λ), where u is the number of operation functions in the composite operation function ƒ_(CF)(u, Λ), and Λ is an arranging rule of the operation functions, which is: some a function is repeatedly used for λ−1 times, and as λ=n, a left cycle composite operation function is constructed as

${{f_{{CF} - l}\left( {{n - 1},\Lambda} \right)} = {\underset{\underset{n - 1}{}}{l_{1}l_{1}\ldots \mspace{11mu} l_{1}} = \left( l_{1} \right)^{n - 1}}},$

and a right cycle composite operation function is constructed as

${f_{{CF} - r}\left( {{n - 1},\Lambda} \right)} = {\underset{\underset{n - 1}{}}{r_{n}r_{n}\; \ldots \mspace{11mu} r_{n}} = {\left( r_{n} \right)^{n - 1}.}}$

Performing the two composite operation functions on a permutation π=[a₁a₂ . . . a_(n)] respectively, two sets of n permutations are obtained as {(l₁)^(n−1)π}

{π, l₁π, l₁ ²π, . . . , l₁ ^(n−1)π} and {(r_(n))^(n−1)π}

{π, r_(n)π, r_(n) ²π, . . . , r_(n) ^(n−1) π}. {(l₁)^(n−1)π} and {(r_(n))^(n−1)π} are two orbits of the permutation π as the orbit {C_(n)π}, we have {C_(n)π}={(l₁)^(n−1)π}={(r_(n))^(n−1)π}, namely, three orbits obtained by the three different operations form equivalence class but corresponding C-LSs are not equal each other because of different arrangement of permutations in these orbits.

As a result, the cyclic group C_(n) of the code set P_(n)={C_(n)O_(n)} can be replaced by the left cycle composite operation function (l₁)^(n−1) or the right cycle composite operation function (r_(n))^(n−1), each orbit {C_(n)o_(α)} is obtained by {C_(n)o_(α)}={(r_(n))^(n−1)o_(α)}={(l₁)^(n−1)o_(α)}, the expression enumerating all codewords is, P_(n)=C_(n)O_(n)={(r_(n))^(n−1)O_(n)}={{(r_(n))^(n−1)o₁}, {(r_(n))^(n−1)o₂}, . . . , {(r_(n))^(n−1)o_(n−1)}}={(l₁)^(n−1)O_(n)}={{(l₁)⁻¹o₁}, {(l₁)^(n−1)o₂}, . . . , {(l₁)^(n−1)o_(n−1)}}. Structure features of the orbit leader array O_(n) provided by Theorem 2 are analyzed below and several different design methods are provided thereafter.

Structure Features of the Orbit Leader Array O_(n):

An orbit leader array of the presented (n,n(n−1),n−1) permutation group code has the following features: first, it is an array of (n−1)×n, each row thereof is a permutation of S_(n), and an unique column thereof contains a same element a_(k)=k, where k, a_(k)εZ_(n) ⁰ or k, a_(k)εZ_(n) ¹; second, removing the column containing the same element, residual rows and columns constitute a Latin square with a size of (n−1)×(n−1); and third, each row of the orbit leader array O_(n) has n different adjacent pairs (α_(μ),a_(v)) containing cyclic adjacent pairs, and the orbit leader array O_(n) itself contains n(n−1) different adjacent (or cyclic adjacent) pairs, μ, v, a_(μ), a_(v)εZ_(n) ⁰ or μ, v, a_(μ), a_(v)εZ_(n) ¹, a_(μ)≠a_(v), and μ≠v. Generally, n(n−1) different pairs in a form of (aμ, a_(v)) can be obtained as constructed by n positive integers, which is a sufficient condition for the orbit leader array containing n(n−1) different adjacent pairs.

Design Method of the Orbit Leader Array O_(n):

An orbit leader array meeting the above three structure features can be calculated by explicit expressions, and the following two design methods can be realized by hardwares for Theorem 2.

Method 1: A Permutation Contains Element 0

Let a_(α) ₁ _(,β) ₁ εZ_(n) ⁰={0, 1, . . . , n−1} denote an element in the α₁th row and the β₁th column of an array O_(n1), where α₁=0, 1, . . . , n−2 denotes the row index of the array O_(n1), β₁=0, 1, . . . , n−1 denotes the column index of the array O_(n1), and k₁=0, 1, . . . , n−1 denotes that all elements in the k₁th column of the array O_(n1) equal k₁; as n is a prime, let a modular n of xn equal 0 if α_(α) ₁ _(,β) ₁ is a multiple of n, namely a_(α) ₁ _(,β) ₁ =xn(mod n)=0, where x could be any integer, and calculate each element of each permutation of the orbit leader array O_(n1) by:

a _(α) ₁ _(,β) ₁ (k ₁)=[(α₁+1)×(β₁ −k)+k ₁](mod n)  (i)

O _(n1)(k ₁)={o ₀ ,o ₁ , . . . ,o _(n−2) }={{a _(α) ₁ _(,β) ₁ (k ₁)}_(α) ₁ ₌₀ ^(n−2)}_(β) ₁ ₌₀ ^(n−1)(k ₁=0,1, . . . ,n−1)  (ii)

Method 2: A Permutation Contains No Element 0

Let a_(α) ₂ _(,β) ₂ εZ_(n) ¹={1, 2, . . . , n} denote an element in the α₂th row and the β₂th column of an array O_(n2), where α₂=1, 2, . . . , n−1 denotes the row index of the array O_(n2), β₂=1, 2, . . . , n denotes the column index of the array O_(n2), and k₂=1, 2, . . . , n denotes that all elements in the k₂th column of the array O_(n2) equal k₂; as n is a prime, let a modular n of xn equal n if a_(α) ₂ _(,β) ₂ is a multiple of n, namely a_(α) ₂ _(,β) ₂ =xn(mod n)=n, where x could be any integer, and calculate an element of a permutation of the orbit leader array O_(n2) by:

a _(α) ₂ _(,β) ₂ (k ₂)=[(α₂(β₂ −k ₂)+k ₂](mod n)  (iii)

O _(n2)(k ₂)={o ₁ ,o ₂ , . . . ,o _(n−1) }={{a _(α) ₂ _(,β) ₂ (k ₂)}_(α) ₂ ₌₁ ^(n−1)}_(β) ₂ ₌₀ ^(n)(k ₂=0,1, . . . ,n−1)  (iv)

As k₂=n, equations (iii) and (iv) in method 2 can be simplified as:

a _(α,β)(n)=[α·β](mod n) for α=1,2, . . . ,n−1 and β=1,2, . . . ,n  (v)

O _(n) ={o ₁ ,o ₂ , . . . ,o _(n−1))}={{a _(α,β)(n)}_(β=1) ^(n)}_(α=1) ^(n−1)=[[α·β]_(β=1) ^(n)]_(α=1) ^(n−1)(mod n)={α·o ₁}_(α=1) ^(n−1)(mod n)  (vi)

Calculation of equation (vi) is the same as that of O_(n) in Theorem 2.

Example 2

Let n=5, according to the design method 1, if a_(α) ₁ _(,β) ₁ εZ_(n) ⁰, c₀=o₀=e=[01234], and each element of each permutation of O_(n1)(k_(n)) is calculated by a_(α) ₁ _(,β) ₁ (k₁)=[(α₁+1)×(β₁−k₁)+k](mod n), different orbit leader arrays can be calculated by O_(n1)(k₁) in equation (ii) as follows as k₁=0, 1, 2, 3, 4:

$\begin{Bmatrix} {01234,} \\ {02413,} \\ {03142,} \\ 04321 \end{Bmatrix}_{k_{1} = 0}\begin{Bmatrix} {01234,} \\ {41302,} \\ {31420,} \\ 21043 \end{Bmatrix}_{k_{1} = 1}\begin{Bmatrix} {01234,} \\ {30241,} \\ {14203,} \\ 43210 \end{Bmatrix}_{k_{1} = 2}\begin{Bmatrix} {01234,} \\ {24130,} \\ {42031,} \\ 10432 \end{Bmatrix}_{k_{1} = 3}$ $\begin{Bmatrix} {01234,} \\ {13024,} \\ {20314,} \\ 32104 \end{Bmatrix}_{k_{1} = 4}$

Performing a cyclic-left-shift composite operation function (l₁)⁴ or a cyclic-right-shift composite operation function (r₅)⁴ on the above five orbit leader arrays of O_(n1)(k₁) (k₁=0, 1, 2, 3, 4) respectively, ten equivalent permutation code sets can be obtained.

Let n=5, according to the design method 2 and a corresponding simplified alternative, if a_(α) ₂ _(,β) ₂ εZ_(n) ¹, c₁=o₁=e=[12345], and each element of each permutation is calculated by (iii) a_(α) ₂ _(,β) ₂ (k₂)=[α₂(β₂−k₂)+k₂] (mod n) or (v) a_(α,β)(n)=[α·β](mod n), different orbit leader arrays can be calculated by O_(n2)(k₂) in equation (iv) and O_(n) in equation (vi) as follows as k₂=1, 2, 3, 4, 5:

$\begin{Bmatrix} {12345,} \\ {13524,} \\ {14253,} \\ 15432 \end{Bmatrix}_{k_{2} = 1}\begin{Bmatrix} {12345,} \\ {52413,} \\ {42531,} \\ 32154 \end{Bmatrix}_{k_{2} = 2}\begin{Bmatrix} {12345,} \\ {41352,} \\ {25314,} \\ 54321 \end{Bmatrix}_{k_{2} = 3}\begin{Bmatrix} {12345,} \\ {35241,} \\ {53142,} \\ 21543 \end{Bmatrix}_{k_{2} = 4}$ ${\begin{Bmatrix} {12345,} \\ {24135,} \\ {31425,} \\ 43215 \end{Bmatrix}_{k_{2} = 5}\mspace{14mu} O_{5}} = \begin{Bmatrix} {12345,} \\ {24135,} \\ {31425,} \\ 43215 \end{Bmatrix}$

Performing a cyclic-left-shift composite operation function (l₁)⁴ or a cyclic-right-shift composite operation function (r₅)⁴ on five orbit leader arrays of O_(n2)(k₂) (k₂=1, 2, 3, 4, 5) and a simplified orbit leader array O₅ respectively, 12 permutation code sets obtained are equivalent to the code set of the (n,n(n−1),n−1) permutation group code obtained by composition operations, namely, for k=1, 2, 3, 4, 5,

$P_{5} = {{C_{5}O_{5}} = {\left\{ {\left( r_{5} \right)^{4}{O_{52}\left( k_{2} \right)}} \right\} = {\left\{ {\left( l_{1} \right)^{4}{O_{52}\left( k_{2} \right)}} \right\} = {\left\{ {\left( r_{5} \right)^{4}O_{5}} \right\} = {\left\{ {\left( l_{1} \right)^{4}O_{5}} \right\} = \begin{Bmatrix} {12345,} & {24135,} & {31425,} & {43215,} \\ {23451,} & {35241,} & {42531,} & {54321,} \\ {34512,} & {41352,} & {53142,} & {15432,} \\ {45123,} & {52413,} & {14253,} & {21543,} \\ {51234,} & {13524,} & {25314,} & 32154 \end{Bmatrix}}}}}}$

Part 2: Structure Design of a Generator of the (n,n(n−1),n−1) Permutation Group Code Based on Coset Partition

Illustration of the generator comprises 4 parts: generator architecture, orbit leader array generator, flash memory and cyclic-bidirectional-shift register group.

Binary Expression of a Permutation:

If m-bit binary data are used to express elements of a permutation with a length of n, the permutation can be described by a binary array of m×n, and 2^(m−1)+1≦n≦2^(m).

Generator Architecture of the Presented Code Set

As in FIG. 1, the generator architecture of the presented code set is formed by 3 parts: an orbit leader array generator, a flash memory and a cyclic-bidirectional-shift register group. A schematic circuit of the orbit leader array generator is designed based on equations (i)˜(vi), a specific working process is performing an operation of {αo₁}_(α=1) ^(n−1)(mod n) to generate an orbit leader array O_(n)={o₁, o₂, . . . , o_(n−1)} containing n−1 permutations. The flash memory is operable for storing an output result O_(n)={o₁, o₂, . . . , o_(n−1)} of the orbit leader array generator and an output result P_(n)={{(l₁)^(n−1)o₁}, {(l₁)^(n−1)o₂}, . . . , {(l₁)^(n−1)o_(n−1)}} or P_(n)={{(r_(n))^(n−1)o₁}, {(r_(n))^(n−1)o₂}, . . . , {(r_(n))^(n−1)o_(n−1)}} of the cyclic-bidirectional-shift register group. The cyclic-bidirectional-shift register group is operable for performing an operation on a permutation by a cyclic-left-shift composite operation function (l₁)^(n−1) or a cyclic-right-shift composite operation function (r_(n))^(n−1) (specifically, performing cyclic shift on a permutation o_(α) to a left or right direction for n−1 times) calculating an orbit {(l₁)^(n−1)oα} or {(r_(n))^(n−1)o_(α)} of an orbit leader permutation o_(α), where α=1, 2, . . . , n−1. For an orbit {(l₁)^(n−1)o_(α)} or {(r_(n))^(n−1)o_(α)} contains n permutations, a (n,n(n−1),n−1) permutation group code based on coset partition can be generated by repeating generating process of each orbit for n−1 times, and a specific calculating equation thereof is: P_(n)=C_(n)O_(n)={(l₁)^(n−1)O_(n)}={{(l₁)^(n−1)o₁}, {(l₁)^(n−1)o₂}, . . . , {(l₁)^(n−1)o_(n−1)}} or P_(n)=C_(n) O_(n)={{(r_(n))^(n−1)O_(n)}, {(r_(n))^(n−1)o₁}, {(r_(n))^(n−1)o₂}, . . . , {(r_(n))^(n−1)o_(n−1)}}.

The orbit leader array generator is shown in FIG. 2 and structural parameters thereof are designed as follows with an optimum circuit structure. To avoid amplitude values attenuating to 0 under fading interference conflicting with code element 0 in a code, set a_(α,β)εZ_(n) ¹ to ensure absence of element 0 in each permutation code, where n is an arbitrary prime. To facilitate code element tracking, let k₂=n which means that all elements of the last column of the orbit leader array are the same with a value of n, so that equation (iii) can be simplified to an equation (v): a_(α,β)(n)=[α·β] (mod n), and calculation of the orbit leader array O_(n) can be simplified to O_(n)={o₁, o₂, . . . , o_(n−1)}={αo₁}_(α=1) ^(n−1)(mod n), where α=1, 2, . . . , n−1 representing that n−1 permutations are contained in the orbit leader array, and β=1, 2, . . . , n representing that n elements are contained in each permutation.

The orbit leader array generator is operable for performing an operation of O_(n)={αo₁}_(α=1) ^(n−1)(mod n)={o₁, 2o₁, . . . , (n−1)o₁}(mod n) to generate n−1 orbit leader permutations as an initial permutation is o₁=e=[12 . . . n], and transmitting each of the permutations to the flash memory right after it is generated.

The orbit leader array generator further comprises 5 parts: n parallel running input buffers (10), n parallel running positive integer adders (11), n parallel running mod n calculators (12), n parallel running output buffers (13), an n-input single-output switch (14) and an enable signal generator (15). Working principle of each part is described below.

The n parallel running input buffers (10) are formed by n m-bit binary registers, each binary register stores one of n input data as an m-bit binary data, an input and an output of each register are connected to m parallel data lines respectively, and the orbit leader generator starts to work after inputting the initial permutation o₁=e=[12 . . . n] into the n parallel running input buffers (10). The n parallel running positive integer adders are operable for converting multiple operations in O_(n)={αo₁}_(α=1) ^(n−1)={o₁, 2o₁, . . . , (n−1)o₁} to accumulating operations on each element of the initial permutation o₁=[12 . . . n], namely, mainly performing an operation of {αo₁}_(α=1) ^(n−1). Initial identity permutation requires no accumulation and can be transmitted directly to an output buffer, so that calculation of the set {αo₁}_(α=1) ^(n−1) needs n−2 accumulations. Each positive integer adder is formed by m′ binary full-adders and an m′-bit B register, with m parallel input data lines and m′ parallel output data lines, and m<m′≦┌log₂(n−1)²┐, an input of the binary full-adder is operable for receiving data from the input buffer, another input of the binary full-adder is connected to an output of the B register, and an output of the binary full-adder is connected to an input of the B register. As an enable signal E=1, each adder performs an addition between a last summation result (data in the B register) and an input of a corresponding parallel running input buffer (10), stores a result thereof in the B register and transmits the result to a corresponding parallel running mod n calculator (12); as the enable signal E=0, the n parallel running positive integer adders do not work.

The n parallel running mod n calculators (12) are operable for performing an operation of {αo₁}_(α=1) ^(n−1)(mod n), namely, performing mod n operations on data from the B register in the n parallel running positive integer adders, each mod n calculator is formed by a two-input single-output general mod n calculator, an m-bit C register and an m-bit D register, with m′ parallel input data lines and m parallel output data lines, an input of the general mod n calculator is connected to the output of the m′-bit B register through m′ parallel input data lines, another input of the general mod n calculator is connected to an output of the m-bit C register through m parallel output data lines, an output of the general mod n calculator is facilitated with m parallel output data lines, the m-bit C register is operable for storing and maintaining an m-bit binary value corresponding to n, the m-bit D register is operable for storing output values of said general mod n calculator, and a data |x| stored in the m-bit D register is output as it is not 0, otherwise a data stored in the m-bit C register is output.

The n parallel running output buffers (13) are formed by n m-bit registers, with the same structure as the n parallel running input buffers (10), operable for storing current orbit leader permutation, and as the (n−1)th buffer of the n parallel running output buffers (13) is prepared with current data, a signal is transmitted the first switch of the n-input single-output switch (14) so that this first switch is on.

The n-input single-output switch (14) is operable for serially transmitting each of the n data from the n parallel running output buffers (13) to a bus. m data lines of each output buffer are connected to an m-paralleled bus by a corresponding turn-on switch, the signal of closing a switch is transmitted to the first switch of the n-input single-output switch (14) as the (n−1)th buffer of the n parallel running output buffers is prepared with current data, and as the nth switch of the n-input single-output switch is on, the final data of a codeword is transmitted to the flash memory by the bus and a high level signal is transmitted to an input of the enable signal generator (15).

The enable signal generator (15) is operable for providing enable signals for the n parallel running positive integer adders (11) and formed by a binary plus 1 counter and a monostable flip-flop, with an input line and an output line which outputs a low level at a normal state, an input of the enable signal generator is connected to an output controlling signal line of the nth switch of the n-input single-output switch (14), an output of the enable signal generator is connected to enable terminals of the n parallel running positive integer adders (11), as the nth switch of the n-input single-output switch (14) is on, the enable signal generator (15) is enabled, the binary plus 1 counter performs an add-one operation, the monostable flip-flop generates a high level impulse with a width of a cp and transmits it to enable terminals of the n parallel running positive integer adders (11) to set E=1, and as the nth switch of the n-input single-output switch (14) is off, the enable signal generator (15) is disabled and E=0 is maintained. As the binary plus 1 counter performs n−1 add-one operations, the enable signal generator (15) outputs a low level.

The flash memory is shown in FIG. 3, which may be a read only (ROM), programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM) or an electrically erasable programmable read-only memory (E²PROM).

In the flash memory (16), each element of a permutation is represented by an m-bit binary data, e.g. the first element of a permutation is represented by an m-bit binary data b_(1,1), b_(2,1), . . . , b_(m−1,1), b_(m,1), the last element of a permutation is represented by an m-bit binary data b_(1,n), b_(2,n), . . . , b_(m−1,n), b_(m,n), b_(i,j) is binary 0 or 1, i=0, 1, . . . , m−1, and j=0, 1, . . . , n−1. m-bit binary data of an element of a permutation occupies m memory cells defined as an element storage word, a permutation occupies n element storage words, n−1 orbit leader permutations occupy n(n−1) element storage words, and n(n−1) permutation codewords occupy n²(n−1) element storage words. The flash memory (16) is facilitated with an m-bit parallel data input and an m-bit parallel data output. An m-bit data of an element storage word are input in parallel as Wr=1, an m-bit data of an element storage word are output in parallel as Rd=1, and the flash memory (16) is disabled as Wr=0 and Rd=0.

The cyclic-bidirectional-shift register group is shown in FIG. 4. The cyclic-bidirectional-shift register group (17) is operable for performing an operation on a permutation by a cyclic-left-shift composite operation function (l₁)^(n−1) or a cyclic-right-shift composite operation function (r_(n))^(n−1) calculating an orbit {(l₁)^(n−1)o_(α)} or {(r_(n))^(n−1)o_(α)} of an orbit leader permutation o_(α), and a code set {(l₁)^(n−1)O_(n)} or {(r_(n))^(n−1)O_(n)}. Each element of an n-dimensional permutation vector can be expressed by an m-dimensional binary sequence and an n-dimensional permutation vector can be mapped into an m×n-dimensional binary array, corresponding to an m×n flip-flop array. A bidirectional register capable of shifting in both a left direction and a right direction cyclically is formed by n flip-flops in each of the m rows, namely, n flip-flops form a cyclic-bidirectional-shift register, m cyclic-bidirectional-shift registers are needed to form a cyclic-bidirectional-shift register group, e.g. the first cyclic-bidirectional-shift register is operable for storing an n-bit binary data b_(1,1), b_(1,2), . . . , b_(1,n−1), b_(1,n) and the mth cyclic-bidirectional-shift register is operable for storing an n-bit binary data b_(m,1), b_(m,2), . . . , b_(m,n−1), b_(m,n) (it should be noted that the array herein is m×n dimensional, and the flash memory (16) corresponds to an array of n×m). A switch (18) is serially connected to each of the cyclic-left-shift loops, in switches operates in parallel, a cyclic-left-shift operation is performed on in data in parallel by connecting the m switches, and a left-shift input operation and a left-shift output operation are performed on in data in parallel by disconnecting the in switches, and two inputs REG-in and REG-out are facilitated to provide four groups of control signals 00, 01, 10 and 11 corresponding to four working states of the cyclic-bidirectional-shift register group: left-shift input, left-shift output, cyclic-left-shift and cyclic-right-shift. Working process of the cyclic-bidirectional-shift register group (17) is described below.

Process a: input a permutation. As REG-in=0, REG-out=0 and Rd=1, the in parallel switches (18) of the cyclic-left-shift loops are disconnected, the first orbit leader permutation of the flash memory (16) is transmitted to the cyclic-bidirectional-shift register group (17), namely, the cyclic-bidirectional-shift register group performs an left-shift-input operation on m-bit binary in parallel in n times.

Process b: generate a new permutation by cyclic-left-shift. As REG-in=O and REG-out=1, the m parallel switches (18) of the cyclic-left-shift loops are connected, and the cyclic-bidirectional-shift register group (17) performs a cyclic-left-shift operation on m-bit binary in parallel in n times to generate a new permutation.

Process c: output a permutation. As REG-in=1, REG-out=O and Wr=1, the m parallel switches (18) of the cyclic-left-shift loops are connected, the cyclic-bidirectional-shift register group (17) performs the following two operations: transmitting a current permutation generated by Process b to the flash memory (16) by the left-shift-output operation on m-bit binary in parallel in n times, and performing a cyclic-left-shift operation on m-bit binary in parallel in n times, so that a permutation generated by Process b may be reserved.

Process d: generate an orbit {(l₁)^(n−1)o_(α)}. It is formed by a combination of Process b and Process c with the m parallel switches (18) closed. Process b and Process c work alternately: this is that during an impulse of cp, REG-in=O and REG-out=1, the cyclic-bidirectional-shift register group (17) performs a cyclic-left-shift operation of m-bit in parallel to generate a new permutation, and during each of the following n impulses of cp, REG-in=1, REG-out=O and Wr=1, the cyclic-bidirectional-shift register group (17) simultaneously performs a left-shift operation to output a current permutation to the flash memory (16) for storage and a cyclic-left-shift operation to maintainthis permutation by m-bit in parallel in n times. Process d is equivalent to performing an operation of (l₁)^(n−1) on an orbit leader permutation o_(α) to generate an orbit {(l₁)^(n−1)o_(α)}, and storing n−1 permutations generated by the orbit {(l₁)^(n−1)o_(α)} in the flash memory (16).

Process e: generate a code set {(l₁)^(n−1)o_(α)}. It is formed by a combination of Process a and Process d, and a code set {(l₁)^(n−1)O_(n)} of a (n,n(n−1),n−1) permutation group code based on coset partition is generated by repeating Process e for n−1 times.

Process b′: generate a new permutation by cyclic-right-shift. As REG-in=1 and REG-out=1, the m parallel switches (18) of the cyclic-left-shift loops are disconnected, and the cyclic-bidirectional-shift register group (17) performs a cyclic-right-shift operation on m-bit in parallel of length n to generate a new permutation.

Process d′: generate an orbit {(r_(n))^(n−1)o_(α)}. It is formed by a combination of Process b′ and Process c, equivalent to generating an orbit {(r_(n))^(n−1)o_(α)} of a permutation o_(α) and storing the orbit {(r_(n))^(n−1)o_(a)} in the flash memory (16).

Process e′: generate a code set {(r_(n))^(n−1)o_(α)}. It is formed by a combination of Process a and Process d′, and a code set {(r_(n))^(n−1)O_(n)} of a (n,n(n−1),n−1) permutation group code based on coset partition is generated by repeating Process e′ for n−1 times.

While preferred embodiments of the invention have been described above, the invention is not limited to disclosure in the embodiments and the accompanying drawings. Any changes or modifications without departing from the spirit of the invention fall within the scope of the invention. 

What is claimed is:
 1. A construction method of the (n,n(n−1),n−1) permutation group codes based on coset partition, wherein a construction of this permutation code with a code length of n, a minimum distance of n−1 and a code size of n(n−1) is expressed by P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)=C_(n)O_(n)={{C_(n)o₁}, {C_(n)o₂}, . . . , {C_(n)o_(n−1)}}={{c_(β)∘o_(α)}_(β=1) ^(n)}_(α=1) ^(n−1), P_(n)=C_(n)O_(n) represents that C_(n) is a coset of the subgroup O_(n) and O_(n) is also a coset of the subgroup C_(n), P_(n)={{C_(n)o₁}, {C_(n)o₂}, . . . , {C_(n)o_(n−1)}} represents dividing P_(n) into n−1 cosets by the subgroup C_(n), each coset {C_(n)o_(α)} forms an orbit or an cyclic Latin square (C-LS) of a permutation o_(α), P_(n)={{p_(βα)}_(β=1) ^(n)}_(α=1) ^(n−1)={{c_(β)∘o_(α)}_(β=1) ^(n)}_(α=1) ^(n−1) represents a permutation code and each codeword p_(βα) is generated by composition operation of a permutation c_(β) of the subgroup C_(n) and a permutation o_(α) of the subgroup O_(n), α=1, 2, . . . n−1, and β=1, 2, . . . n.
 2. The construction method of the (n,n(n−1),n−1) permutation group code of claim 1, wherein C_(n) is replaced by a cyclic-left-shift composite operation function (l₁)^(n−1) or a cyclic-right-shift composite operation function (r_(n))^(n−1) and composition operation of the subgroups C_(n) and O_(n) is converted into the cyclic shift operation implemented by hardward circuit; and the operation of replacing C_(n) by (l₁)^(n−1) or (r_(n))^(n−1) further comprises: implementing an orbit {C_(n)o_(α)} of a permutation o_(α)εO_(n) by an equivalent expression {C_(n)o_(α)}={(r_(n))^(n−1)o_(α)}={(l₁)^(n−1)o_(α)}, where α=1, 2, . . . n−1, and implementing P_(n)=C_(n)O_(n) by an equivalent expression P_(n)=C_(n)O_(n)={(r_(n))^(n−1)O_(n)}={{(r_(n))^(n−1)o₁}, {(r_(n))^(n−1)o₂}, . . . , {(r_(n))^(n−1)o_(n−1)}} or P_(n)=C_(n)O_(n)={(l₁)^(n−1)O_(n)}={{(l₁)⁻¹o₁}, {(l₁)^(n−1)o₂}, . . . , {(l₁)^(n−1)o_(n−1)}}.
 3. The construction method of the (n, n(n−1), n−1) permutation group code of claim 1, wherein the subgroup O_(n) is equivalent to an orbit leader array, and a construction method thereof comprises steps of: if a permutation contains element 0: let a_(α) ₁ _(,β) ₁ εZ_(n) ⁰={0, 1, . . . , n−1} denote an element in the α₁th row and the β₁th column of an array O_(n1), where α₁=0, 1, . . . , n−2 denotes the row index of the array O_(n1), β₁=0, 1, . . . , n−1 denotes the column index of the array O_(n1), and k₁=0, 1, . . . , n−1 indicates that all elements in the k₁th column of the array O_(n1) equal k₁; setting a_(α) ₁ _(,β) ₁ =xn(mod n)=0 as n is a prime, where x is an integer; and calculating each element of each permutation of the array O_(n1), by a_(α) ₁ _(,β) ₁ (k₁)=[(α₁+1)×(β₁−k₁)+k₁](mod n) and calculating all permutations of the array O_(n1) by O_(n1)(k)={o₀, o₁, . . . , o_(n−2)}={{a_(α) ₁ _(,β) ₁ (k₁)}_(α) ₁ ₌₀ ^(n−2)}_(β) ₁ ₌₀ ^(n−1); or if a permutation contains no element 0: setting a_(α) ₂ _(,β) ₂ εZ_(n) ¹={1, 2, . . . , n} representing an element in the α₂th row and the β₂th column of an array O_(n2), where α₂=1, 2, . . . , n−1 representing row index of the array O_(n2), β₂=1, 2, . . . , n representing column index of the array O_(n2), and k₂=1, 2, . . . , n representing that all elements in the k₂th column of the array O_(n2) equal k₂; setting α_(α) ₂ _(,β) ₂ =xn(mod n)=n as n is a prime, where x is an integer; and calculating each element of each permutation of the array O_(n2) by a_(α) ₂ _(,β) ₂ (k₂)=[α₂(β₂−k₂)+k₂](mod n) and calculating all permutations of the array O_(n2) by O_(n2)(k₂)={o₁, o₂, . . . , o_(n−1)}={{a_(α) ₂ _(,β) ₂ (k₂)}_(α) ₂ ₌₁ ^(n−1)}_(β) ₂ ₌₁ ^(n); and setting k₂=n and a_(α,β)εZ_(n) ¹={1, 2, . . . , n}, calculating each element of each permutation of the array O_(n2) by a simplified expression a_(α,β)(n)=[α·β](mod n) and calculating all permutations of the array O_(n2) by a simplified expression O_(n)={o₁, o₂, . . . , o_(n−1)}={αo₁}_(α=1) ^(n−1)(mod n), where o₁=e=[a₁a₂ . . . a_(n)]=[12 . . . n], a₁, a₂, . . . , a_(n)εZ_(n) ¹, α=1, 2, . . . n−1 and β=1, 2, . . . n.
 4. A generator of the (n,n(n−1),n−1) permutation group code based on coset partition, comprising an orbit leader array generator, a flash memory and a cyclic-bidirectional-shift register group, wherein said orbit leader array generator is operable for performing an operation of O_(n)={αo₁}_(α=1) ^(n−1)(mod n) to generate n−1 orbit leader permutations; said flash memory is operable for storing output results of said orbit leader array generator and said a cyclic-bidirectional-shift register group; and said a cyclic-bidirectional-shift register group is operable for performing the operation of (l₁)^(n−1) or (r_(n))^(n−1) acting on a permutation by calculating the orbit {(l₁)^(n−1)o_(α)} or {(r_(n))^(n−1) o_(α)} of an orbit leader permutation o_(α) and a code set {(l₁)^(n−1)O_(n)} or {(r_(n))^(n−1)O_(n)}, where α=1, 2, . . . , n−1.
 5. The generator of the (n,n(n−1),n−1) permutation group code of claim 4, wherein said orbit leader array generator is operable for calculating n−1 orbit leader permutations by O_(n)={αo₁}_(α=1) ^(n−1)(mod n)={o₁, 2o₁, . . . , (n−1)o₁}(mod n) as an initial input permutation is an identity permutation expressed by o₁=e=[12 . . . n] and storing calculating results in ROM thereof; and said orbit leader array generator further comprises n parallel running input buffers, n parallel running positive integer adders, n parallel running mod n calculators, n parallel running output buffers, an n-input single-output switch and an enable signal generator, wherein said n parallel running input buffers are formed by n m-bit binary registers, an input and an output of each register are connected to m parallel data lines respectively, and 2^(m−1)≦n≦2^(m); said n parallel running positive integer adders are operable for performing an operation of {αo₁}_(α=1) ^(n−1), each positive integer adder is formed by m′ binary full-adders and an m′-bit B register, with m parallel input data lines and m′ parallel output data lines, and m<m′≦┌log₂(n−1)²┐, an input of said binary full-adder is operable for receiving data from said input buffer, another input of said binary full-adder is connected to an output of said B register, an output of said binary full-adder is connected to an input of said B register, and said n parallel running positive integer adders are enabled as an enable signal E=1 and disabled as the enable signal E=0; said n parallel running mod n calculators are operable for performing an operation of {αo₁}_(α=1) ^(n−1)(mod n), each mod n calculator is formed by a two-input single-output general mod n calculator, an m-bit C register and an m-bit D register, with m′ parallel input data lines and m parallel output data lines, an input of said general mod n calculator is connected to the output of said m′-bit B register through m′ parallel input data lines, another input of said general mod n calculator is connected to an output of said m-bit C register through m parallel output data lines, an output of said general mod n calculator is facilitated with m parallel output data lines, said m-bit C register is operable for storing and maintaining an m-bit binary value corresponding to n, said m-bit D register is operable for storing output values of said general mod n calculator, and a data stored in said m-bit D register is output as it is not 0, otherwise a data stored in said m-bit C register is output; said n parallel running output buffers are formed by n m-bit registers, an input and an output of each m-bit register are connected to m parallel data lines respectively, and as the (n−1)th buffer of said n parallel running output buffers is prepared with current data, this buffer sends a signal to the first switch of said n-input single-output switch; said n-input single-output switch is operable for serially transmitting each of the n data from said n parallel running output buffers to a bus, m data lines of said output buffer are connected to an m-paralleled bus by connecting a corresponding switch, a connecting signal of said the first switch of said n-input single-output switch is a control signal output from said the (n−1)th buffer of said n parallel running output buffers, and a high level signal is transmitted to an input of said enable signal generator as the nth switch of said n-input single-output switch is on; said enable signal generator is operable for providing enable signals for said n parallel running positive integer adders and formed by a binary plus 1 counter and a monostable flip-flop, with an input signal line and an output signal line of maintaining a low level at a normal state, an input of said binary plus 1 counter is connected to an output signal line of said the nth switch of said n-input single-output switch and receives a control signal as said the nth switch is on, said binary plus 1 counter performs an add-one operation and said monostable flip-flop generates a high level impulse with a width of a cp, and transmits said impulse to enable terminals of said n parallel running positive integer adders through the output line, and as said binary plus 1 counter performs n−1 add-one operations, said monostable flip-flop generates no impulse and said enable signal generator outputs a low level.
 6. The generator of the (n,n(n−1),n−1) permutation group code of claim 4, wherein said the cyclic-bidirectional-shift register group is operable for realizing an orbit {(l₁)^(n−1)o_(α)} or {(r_(n))^(n−1)o_(α)} and a code set {(l₁)^(n−1)O_(n)} or {(r_(n))^(n−1)O_(n)} and formed by a flip-flop array of m rows and n columns, a bidirectional register capable of cyclic-shifting to both the left and the right is formed by n flip-flops in each row of m rows, each of m switches is connected to each of the cyclic-left-shift loops, in switches operates in parallel, in binary are cyclic-left-shifted in parallel through closing in switches, and m binary are left-shifted to input or output in parallel by opening m switches, and two ports REG-in and REG-out are facilitated to provide four groups of control signals 00, 01, 10 and 11 corresponding to four working states of said cyclic-bidirectional-shift register group: left-shift-input, left-shift-output, cyclic-left-shift and cyclic-right-shift. 